# 使用官方 Node.js 18 Alpine 镜像作为基础镜像
FROM node:18-alpine

# 设置工作目录
WORKDIR /app

# 安装 dumb-init 用于正确处理信号
RUN apk add --no-cache dumb-init

# 复制 package.json 和 package-lock.json (如果存在)
COPY package*.json ./
COPY pnpm-lock.yaml ./

# 安装 pnpm
RUN npm install -g pnpm

# 安装依赖
RUN pnpm install --frozen-lockfile --production

# 复制源代码
COPY . .

# 构建应用
RUN pnpm build

# 创建非 root 用户
RUN addgroup -g 1001 -S nodejs
RUN adduser -S nextjs -u 1001

# 更改文件所有权
RUN chown -R nextjs:nodejs /app
USER nextjs

# 暴露端口
EXPOSE 3010

# 设置环境变量
ENV NODE_ENV=production
ENV PORT=3010

# 使用 dumb-init 启动应用
ENTRYPOINT ["dumb-init", "--"]
CMD ["pnpm", "start"]